home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / Panner.C < prev    next >
C/C++ Source or Header  |  1990-12-04  |  1KB  |  64 lines

  1. //$Panner$
  2.  
  3. #include "Panner.h"
  4. #include "Clipper.h"
  5.  
  6. //---- Panner ------------------------------------------------------------------
  7.  
  8. Panner::Panner(Clipper *mc, Point extent) : Slider(5555, eVert)
  9. {
  10.     cl= mc;
  11.     cl->AddObserver(this);
  12.     contentRect.extent= extent;
  13.     if (extent.x >= 0)
  14.     SetFlag(eVObjHFixed);
  15.     if (extent.y >= 0)
  16.     SetFlag(eVObjVFixed);
  17. }
  18.  
  19. Panner::~Panner()
  20. {
  21.     if (cl)
  22.     cl->RemoveObserver(this);
  23. }
  24.  
  25. Metric Panner::GetMinSize()
  26. {
  27.     return Metric(40, 40); 
  28. }
  29.  
  30. void Panner::Control(int id, int part, void *val)
  31. {
  32.     if (id == 5555) {
  33.     if (part == eSliderThumb)
  34.         cl->Scroll(cPartScrollAbs, *((Point*)val));
  35.     } else
  36.     Slider::Control(id, part, val);
  37. }
  38.  
  39. void Panner::DoObserve(int, int part, void *vp, ObjPtr op)
  40. {
  41.     if (op == cl) {
  42.     switch (part) {
  43.     case cPartExtentChanged:
  44.         SetThumbRange(*((Point*)vp));
  45.         break;
  46.         
  47.     case cPartScrollPos:
  48.         SetVal(*((Point*)vp), TRUE);
  49.         Update();
  50.         break;
  51.         
  52.     case cPartViewSize:
  53.         SetMax(*((Point*)vp));
  54.         Update();
  55.         break;
  56.         
  57.     case cPartSenderDied:
  58.         cl= 0;
  59.         break;
  60.     }
  61.     }
  62. }
  63.  
  64.